package com.song.service.impl;

import com.song.bean.Menu;
import com.song.dao.impl.MenuDaoImpl;
import com.song.service.MenuService;

import java.util.ArrayList;
import java.util.List;

public class MenuServiceImpl implements MenuService {
    private MenuDaoImpl menuDao = new MenuDaoImpl();

    /**
     * 将菜单的一级目录与二级目录区分
     *
     * @return 一级目录（一级目录包含二级目录）
     */
    @Override
    public List<Menu> getMenus() {
        //将菜单的一级目录与二级目录区分
        List<Menu> menuList = menuDao.getMenus(null,null);
        System.out.println("=-=-=-=-=-="+menuList.size());
        //存放一级目录的集合
        List<Menu> firstMenus = new ArrayList<>();
        for (Menu menu : menuList) {
            //当该菜单的父菜单ID为0时，表示其为顶级菜单
            if (menu.getFatherMenuId() == 0) {
                //存放二级目录的集合
                List<Menu> secondMenus = new ArrayList<>();
                //当菜单的父菜单ID与该顶级菜单ID值相等时，这个菜单就时其子菜单
                for (Menu menu1 : menuList) {
                    if (menu1.getFatherMenuId() == menu.getMenuId()) {
                        //将二级目录放入二级集合中
                        secondMenus.add(menu1);
                    }
                }
                //设置建立一级与二级目录的关系
                menu.setSecondMenu(secondMenus);
                //将一级目录存到集合
                firstMenus.add(menu);
            }

        }
        return firstMenus;
    }
    /**
     * 获取菜单信息
     *
     * @return 菜单信息集合
     */
    @Override
    public List<Menu> getMenus(Integer pageIndex,Integer pageSize) {
        return menuDao.getMenus(pageIndex,pageSize);
    }
    /**
     * 通过菜单ID查询菜单信息
     * @param menuId 菜单ID
     * @return 菜单信息对象
     */
    @Override
    public Menu findById(Integer menuId) {
        return menuDao.findById(menuId);
    }
    /**
     * 修改菜单信息
     * @param menu 修改的菜单对象
     * @return 被修改后的菜单对象
     */
    @Override
    public Boolean updateMenu(Menu menu) {
        return menuDao.updateMenu(menu);
    }
    /**
     * 新增菜单
     * @param menu 新增菜单信息
     * @return true 新增成功  false 失败
     */
    @Override
    public Boolean insertMenu(Menu menu) {
        return menuDao.insertMenu(menu);
    }
    /**
     * 删除菜单
     * @param menuId 要删除的菜单ID
     * @return true 成功  false 失败
     */
    @Override
    public Boolean deleteMenu(Integer menuId) {
        return menuDao.deleteMenu(menuId);
    }


}
